package pincipal.pack;

import java.util.ArrayList;

import partidas.Partida;

import database.Consulta;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class SeleccionarPartidas extends Activity {

	private ListView listaPartidas;
	private String partidaBuscada;
	private ArrayList<Partida> arrayMat = new ArrayList<Partida>();
	private ArrayList<String> seleccionados;
	private ArrayList<String> seleccionadosAqui;
	private ArrayList<String> cantidades;
	private ArrayList<String> lista = new ArrayList<String>();
	private String nombrePrevio;
	private String fechaPrevia;
	private ImageView iconoBusqueda;
	private EditText filtro;
	private Button aceptar;
	private Button cancelar;
	private ArrayAdapter<String> adaptadorSimple;
	private Bundle bundle;
	private String tipo;
	
	@Override
	public void onCreate(Bundle savedInstanceState )
	{

		bundle = getIntent().getExtras();
		this.nombrePrevio = bundle.getString("NOMBRENUEVO");
		this.fechaPrevia = bundle.getString("FECHA");
		this.tipo = bundle.getString("TIPO");
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
		super.onCreate(savedInstanceState);
		requestWindowFeature( Window.FEATURE_NO_TITLE );
		setContentView(R.layout.seleccionarmateriales);
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
		this.filtro = (EditText)findViewById(R.id.filtro);
		this.partidaBuscada = filtro.getText().toString();
		
		this.iconoBusqueda = (ImageView)findViewById(R.id.iconoBusqueda);
		this.iconoBusqueda.setImageResource(android.R.drawable.ic_menu_search);
		
		this.listaPartidas = (ListView)findViewById(R.id.lista);
		this.listaPartidas.setTextFilterEnabled(true);
		
		this.aceptar = (Button)findViewById(R.id.botonFinalizar);
		this.cancelar = (Button)findViewById(R.id.botonCancelar);
				
		seleccionados = bundle.getStringArrayList("SELECCIONADOS");
		cantidades = bundle.getStringArrayList("CANTIDADES");
		 seleccionadosAqui = new ArrayList<String>();
		Cursor fila =(Cursor)Consulta.consultPartidas(SeleccionarPartidas.this);
		int i = 0;
		if (fila.moveToFirst())
        {
        	do {
    
        		lista.add(lista.size(), fila.getString(1));
        		this.arrayMat.add(this.arrayMat.size(), new Partida(fila.getInt(0), fila.getString(1), fila.getString(2)));
                i++;
           } while(fila.moveToNext());    	
        }      
        if (! fila.moveToFirst())
        {
        	Toast.makeText(this, "No existen partidas registradas", Toast.LENGTH_SHORT).show();
        }
        
        adaptadorSimple = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista);
        removerSeleccionados();
		listaPartidas.setAdapter(adaptadorSimple);
		
		listaPartidas.setOnItemClickListener( new OnItemClickListener()
		{
			public void onItemClick(AdapterView<?> a, View v, int position, long id) 
    		{
				String Partida = (listaPartidas.getItemAtPosition(position)).toString();				
				if(!seleccionados.contains(Partida) && !seleccionadosAqui.contains(Partida))
				{
					seleccionadosAqui.add(Partida);
					Toast.makeText(SeleccionarPartidas.this, Partida+" agregada a Presupuesto", Toast.LENGTH_SHORT).show();
					lista.remove(position);
					adaptadorSimple.notifyDataSetChanged();
				}
				else
				{
					Toast.makeText(SeleccionarPartidas.this, Partida+" ya existe en Presupuesto", Toast.LENGTH_SHORT).show();	
				}
    		}
		});
		
		this.aceptar.setOnClickListener(new OnClickListener() 
		{	
			public void onClick(View arg0) 
			{
				agregarSeleccionados();
				Bundle bundl = new Bundle();
				bundl.putString("NOMBRENUEVO", bundle.getString("NOMBRENUEVO"));
				bundl.putString("NOMBREORIGINAL", bundle.getString("NOMBREORIGINAL"));
				
				bundl.putString("FECHAORIGINAL", bundle.getString("FECHAORIGINAL"));
				bundl.putString("FECHANUEVA", bundle.getString("FECHANUEVA"));

				bundl.putStringArrayList("LISTA", seleccionados);
				bundl.putStringArrayList("CANTIDADES", cantidades);

				if (tipo.equals("agregar"))
				{
					Intent intent = new Intent(SeleccionarPartidas.this, AgregarPresupuesto.class);
					intent.putExtras(bundl);
					startActivity(intent);			
				}
				else
				{
					Intent intent = new Intent(SeleccionarPartidas.this, EditarPresupuesto.class);
					intent.putExtras(bundl);
					startActivity(intent);		
				}	
			}
		});
		
		this.cancelar.setOnClickListener(new OnClickListener() 
		{	
			public void onClick(View arg0) 
			{
				Bundle vacio = new Bundle();
				vacio.putString("NOMBRENUEVO", bundle.getString("NOMBRENUEVO"));
				vacio.putString("NOMBREORIGINAL", bundle.getString("NOMBREORIGINAL"));
				vacio.putString("FECHAORIGINAL", bundle.getString("FECHAORIGINAL"));
				vacio.putString("FECHANUEVA", bundle.getString("FECHANUEVA"));
				vacio.putStringArrayList("CANTIDADES", cantidades);
				vacio.putStringArrayList("LISTA", seleccionados);
				
				if (tipo.equals("agregar"))
				{
					Intent intent = new Intent(SeleccionarPartidas.this, AgregarPresupuesto.class);
					intent.putExtras(vacio);
					startActivity(intent);			
				}
				else
				{
					Intent intent = new Intent(SeleccionarPartidas.this, EditarPresupuesto.class);
					intent.putExtras(vacio);
					startActivity(intent);		
				}
			}
		});
		
		
		registerForContextMenu(this.listaPartidas);
		
		filtro.addTextChangedListener( new TextWatcher()
		{
			public void afterTextChanged(Editable s) {
			}
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				adaptadorSimple.getFilter().filter(s);
			}
		}
		);
	}
	
	private void agregarSeleccionados()
	{
		for(int i = 0; i<seleccionadosAqui.size(); i++)
		{
			seleccionados.add(seleccionadosAqui.get(i));
			cantidades.add("1");
		}
		
	}
	
	private int buscarIdPartida(String nombre)
	{
		for (int i = 0; i < arrayMat.size(); i++)
		{
			if ( arrayMat.get(i).getNombre().equals(nombre))
			{
				return i;
			}
		}
		return 0;
	}


	private void verPartida(int position)
	{
		Bundle bundle = new Bundle();
		Partida clickeado = arrayMat.get(position);
		
		bundle.putInt("ID", position);
		bundle.putString("NOMBRE", clickeado.getNombre());
		bundle.putString("OBSERVACIONES", clickeado.getObservaciones());
		
		Intent intent = new Intent(SeleccionarPartidas.this, VerPartida.class);
		intent.putExtras(bundle);
		startActivity(intent);
	}
	
	
	private void removerIndice(String item)
	{
		for (int i = 0; i < arrayMat.size(); i++)
		{
			if ( arrayMat.get(i).getNombre().equals(item))
			{
				lista.remove(arrayMat.get(i).getId());
				adaptadorSimple.notifyDataSetChanged();
				return ;
			}
		}
		
	}
	private void removerSeleccionados()
	{
		for (int i = 0; i < seleccionados.size(); i++)
		{
			for (int j = 0; j < lista.size(); j++)
			{
				if ( lista.get(j).equals(seleccionados.get(i)))
				{
					lista.remove(j);
					
				}
			}
		}
		adaptadorSimple.notifyDataSetChanged();
	}
}

	
